﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using skhukb.DB;
using skhukb.Models;

namespace skhukb.BL
{
    public class 게시판
    {
        public const int 검색_없음 = -1;
        public const int 검색_제목 = 1;
        public const int 검색_제목내용 = 2;
        public const int 검색_작성자 = 3;

        public const int 페이지크기_디폴트 = 15;
        public const int 게시글분류_전체 = -1;

        public static List<게시판Model> 메뉴목록()
        {
            using (var db = new DBDataContext()) {
                return db.게시판.Select(p => new 게시판Model(p)).ToList();
            }
        }

        public static List<게시글분류Model> 게시글분류목록(int id, bool 전체항목_포함 = false)
        {
            using (var db = new DBDataContext()) {
                var list = db.게시글분류.Where(p => p.게시판ID == id).OrderByDescending(p => p.게시글.Count()).ThenBy(p => p.제목).Select(p => new 게시글분류Model(p)).ToList();
                if (전체항목_포함) list.Insert(0, new 게시글분류Model(게시글분류_전체, "전체"));
                return list;
            }
        }

        public class 현재페이지정보
        {
            public int 현재페이지 { get; set; }
            public int 페이지크기 { get; set; }
            public int 게시글분류 { get; set; }
            public int 검색유형 { get; set; }
            public string 검색어 { get; set; }
        }

        public static 현재페이지정보 Get현재페이지정보(int 게시판ID)
        {
            var 정보 = (현재페이지정보)HttpContext.Current.Session["현재페이지정보" + 게시판ID];
            if (정보 == null) {
                정보 = new 현재페이지정보();
                정보.현재페이지 = 1;
                정보.페이지크기 = 페이지크기_디폴트;
                정보.게시글분류 = 게시글분류_전체;
                정보.검색유형 = 검색_없음;
                정보.검색어 = null;
                HttpContext.Current.Session["현재페이지정보" + 게시판ID] = 정보;
            }
            return 정보;
        }

        public static void Set현재페이지정보(int 게시판ID, int 현재페이지, int 페이지크기, int 게시글분류, int 검색유형, string 검색어)
        {
            var 정보 = Get현재페이지정보(게시판ID);
            정보.현재페이지 = 현재페이지;
            정보.페이지크기 = 페이지크기;
            정보.게시글분류 = 게시글분류;
            정보.검색유형 = 검색유형;
            정보.검색어 = 검색어;
        }
        
        public static bool 글수정권한(DB.게시글 글)
        {
            return 현재사용자.사용자.관리자 || 글.작성자ID == 현재사용자.사용자.ID;
        }
    }
}